﻿/*-----------------------------------------------------------------------
 * <copyright file="DateTimeConverter.cs" company="O-RID">
 *     Copyright (c)2010 O-RID Co.,Ltd.
 * </copyright>
 * <author>Li Dawei&Zhang Jun</author>
 * <summary>
 *          转换日期格式 yyyy-MM-dd
 *          作成日： 08/04/2010 
 *
 * </summary>
 *-----------------------------------------------------------------------
 */
namespace Orid.Management.Statistics.OperatorUnitMangement.Common.SytleSet
{
    using System;
    using System.Globalization;
    using System.Windows.Data;

    /// <summary>
    /// 转换日期格式 yyyy-MM-dd
    /// </summary>
    public class DateTimeConverter : IValueConverter
    {
        /// <summary>
        /// 正向转换器。将值从数据源传给绑定目标时，数据绑定引擎会调用此方法
        /// </summary>
        /// <param name="value">转换之前的值</param>
        /// <param name="targetType">转换之后的类型</param>
        /// <param name="parameter">转换器所使用的参数</param>
        /// <param name="culture">转换器所使用的区域信息</param>
        /// <returns>转换后的值</returns>
        public object Convert(object value,
                           Type targetType,
                           object parameter,
                           CultureInfo culture)
        {

            DateTime date = (DateTime)value;

            /*格式设置
             * {0:d}:2005-11-5 
            */
            string formatString = (string)parameter;
            return String.Format(formatString, date);

            // XAML带参数 用法
            //<TextBlock Text=”{Binding PeakSeasonStart,
            //Converter={StaticResource FormatStringConverter},
            // ConverterParameter=’{0:d}’}” />
        }

        /// <summary>
        /// 反向转换器。将值从绑定目标传给数据源时，数据绑定引擎会调用此方法
        /// </summary>
        /// <param name="value">转换之前的值</param>
        /// <param name="targetType">转换之后的类型</param>
        /// <param name="parameter">转换器所使用的参数</param>
        /// <param name="culture">转换器所使用的区域信息</param>
        /// <returns>转换后的值</returns>
        public object ConvertBack(object value,
                                  Type targetType,
                                  object parameter,
                                  CultureInfo culture)
        {
            string strValue = value.ToString();
            DateTime resultDateTime;
            if (DateTime.TryParse(strValue, out resultDateTime))
            {
                return resultDateTime;
            }
            return value;
        }

    }
}
